package org.zero.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author Zero
 */
@Controller
public class HelloController {

    /**
     * 使用 Model 对象，需要配置视图解析器
     *
     * @param model
     * @return
     */
    @RequestMapping("/hello1.do")
    public String sayHello1(Model model) {
        System.out.println("Hello SpringMVC1");

        model.addAttribute("msg", "Hello SpringMVC1");

        return "success";
    }

    /**
     * 使用 ModelAndView 对象，需要配置视图解析器
     *
     * @return
     */
    @RequestMapping("/hello2.do")
    public ModelAndView sayHello2(ModelAndView modelAndView) {
        System.out.println("Hello SpringMVC2");

        // ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("success");
        modelAndView.addObject("msg", "Hello SpringMVC2");

        return modelAndView;
    }

    /**
     * 使用重定向或请求转发，无需配置视图解析器
     * 重定向与请求转发都不会经过视图解析器，需要自己指定正确的路径
     * 其中重定向无法访问WEB-INF文件夹中的资源
     *
     * @return
     */
    @RequestMapping("/hello3.do")
    public String sayHello3(Model model) {
        System.out.println("Hello SpringMVC3");

        model.addAttribute("msg", "Hello SpringMVC3");

        //请求转发
        return "forward:/WEB-INF/views/success.jsp";
        //重定向
//        return "redirect:xxx.jsp";
    }
}
